package Controllers

import (
	"baize/app/Models"
	"log"
	"net/http"
	"strconv"

	"github.com/gin-gonic/gin"
)

func Ping(c *gin.Context) {
	c.JSON(200, gin.H{
		"message": "pong",
	})
}

func UserCreate(c *gin.Context) {
	var json Models.Users    //  定义json 变量 数据结构类型 为 Models.Users
	err := c.BindJSON(&json) //  获取前台传过来的 json数据

	if err != nil {
		log.Printf("mysql connect error %v", err)
	}

	id, err := json.Insert()

	if err != nil {
		log.Printf("database error %v", err)
		log.Printf("database error %v", id)
		return
	}

	c.JSON(200, gin.H{ // 反馈给前台的信息，同时返回最新创建的一条数据的Id
		"status":  true,
		"id":      id,
		"message": "创建成功",
	})
}

func UserDestroy(c *gin.Context) {
	var json Models.Users
	err := c.BindJSON(&json)
	if err != nil {
		log.Printf("mysql connect error %v", err)
		return
	}

	_id := c.Param("id")
	id, err := strconv.ParseInt(_id, 10, 64)
	if err != nil {
		log.Printf("%s", err)
	}

	json.Destroy(id)

	c.JSON(200, gin.H{
		"status":  true,
		"message": "删除成功",
	})
}

func UserUpdate(c *gin.Context) {
	var json Models.Users
	err := c.BindJSON(&json)

	if err != nil {
		log.Printf("mysql connect error %v", err)
	}
	_id := c.Param("id")
	id, err := strconv.ParseInt(_id, 10, 64)
	if err != nil {
		log.Printf("%s", err)
	}
	name := json.Name
	message := json.Mobile

	log.Printf("id: %d; name: %s; message: %s", id, name, message)

	dbData, err := json.Update(id)
	log.Printf("%s", err)

	if err != nil {
		log.Printf("database error %v", err)
		log.Printf("database error %v", dbData)
		return
	}

	c.JSON(200, gin.H{
		"status":  true,
		"data":    dbData,
		"message": "更新成功",
	})
}

func UserFindAll(c *gin.Context) {
	var json Models.Users
	err := c.BindJSON(&json)

	if err != nil {
		log.Printf("mysql connect error %v", err)
	}

	result, err := json.FindAll()

	if err != nil {
		c.JSON(http.StatusOK, gin.H{
			"status":  false,
			"message": "抱歉未找到相关信息",
		})
		return
	}

	c.JSON(200, gin.H{
		"status":  true,
		"data":    result,
		"message": "查询成功",
	})
}
